﻿#ifndef CSV_PROCESS_API_H
#define CSV_PROCESS_API_H

// ======================
// 导出宏统一管理
// ======================

// 构建 DLL 时使用导出
// 静态库不需要导出/导入宏

// 跨平台导出宏
#if defined(_WIN32) || defined(_WIN64)
    #if defined(CSVLIB_STATIC)
        #define CSV_API
    #elif defined(CSVLIB_EXPORTS)
        #define CSV_API __declspec(dllexport)
    #else
        #define CSV_API __declspec(dllimport)
    #endif
#else  // Linux/GCC 或其他非 Windows 平台
    #if defined(CSVLIB_STATIC)
        #define CSV_API
    #else
        // GCC 使用 __attribute__((visibility("default")))
        #define CSV_API __attribute__((visibility("default")))
    #endif
#endif


#include <string>

// ======================
// 公共接口声明
// ======================
#ifdef __cplusplus
extern "C" {
#endif

CSV_API void binToCsv(const std::string& binFilename, const std::string& csvFilename);
CSV_API int binToCsvStreaming(const std::string& binPath, std::string& csvPath, bool includeHeader = true);

CSV_API void csvToBin(const std::string& csvFilename, const std::string& binFilename);
CSV_API void csvToBinStreaming(const std::string& csvPath, const std::string& binPath);

#ifdef __cplusplus
}
#endif

#endif  // CSV_PROCESS_API_H
